# ============================================================
# * Copyright © hk. 2022-2025. All rights reserved.
# * File name: CMakeLists.txt
# * Author   : 苏木
# * Date     : 2025-05-22
# * Version  : 
# * Description: cmake version 3.16.3
# ============================================================
## https://cmake.com.cn/cmake/help/latest/guide/tutorial/index.html
## https://cmake.org/cmake/help/latest/

# 指定 CMake 的最低版本要求
# --------------------------------------------------
cmake_minimum_required(VERSION 3.10)


# 设置项目名称和使用的编程语言
# --------------------------------------------------
project(SPROJECT C)


# 指定可执行程序和源文件
# --------------------------------------------------
add_executable(app_demo.out main.c)

# Macro和function的参数处理
# --------------------------------------------------

# 4. 变量访问，函数只能访问自己的局部变量；宏可以访问和修改调用者的变量
message(STATUS "==> ${CMAKE_VERSION} 演示3: 变量污染测试")
macro(dangerous_macro)
    set(result1 "MODIFIED")  # 会污染调用者的作用域
endmacro()
function(safe_function1)
    set(result1 "ORIGINAL")
    dangerous_macro()
    message(STATUS "宏替换后的结果: ${result1}")  # 输出: MODIFIED
endfunction()

function(dangerous_function)
    set(result2 "MODIFIED")  # 不会污染调用者的作用域
endfunction()
function(safe_function2)
    set(result2 "ORIGINAL")
    dangerous_function()
    message(STATUS "函数调用后的结果: ${result2}")  # 输出: ORIGINAL
endfunction()

safe_function1()
safe_function2()
# 输出如下：
# -- ==> 3.16.3 演示3: 变量污染测试
# -- 宏替换后的结果: MODIFIED
# -- 函数调用后的结果: ORIGINAL
message("")
